/*
 【提高】小 X 算排名
  题目描述
    小 X 很关心自己在学校的表现。
    班主任手上有一本 “个人得分记录本”，如果一位同学表现好就会加分，表现差则会扣分。
    学期结束，每位同学都得知了自己的个人得分。
    小 X 想知道其他同学情况如何，但由于排名不公布，他只好一个个去问班里的其他同学。

    现在，小 X 手上有班里共 N 位同学的个人得分，他想知道每位同学的排名（得分相同则排名相同，见样例），
    可并不知道该如何计算，希望你帮帮他。
  输入
    第一行包含一个整数 N。
    接下来 N 行，第 i 行包含一个整数 Ai，表示第 i 位同学的得分。
  输出
    N 行，第 i 行包含一个整数，表示第 i 位同学的排名。
  样例输入
    5
    95
    100
    99
    99
    96
  样例输出
    5
    1
    2
    2
    4
  提示
    数据范围
      对于 30% 的数据，N ≤ 10。
      对于 60% 的数据，N ≤ 1000。
      对于 100% 的数据，1 ≤ N ≤ 100000，0 ≤ Ai ≤ 100000。
*/

#include <bits/stdc++.h>

using namespace std;

int a[100005] = {}; // 原始数组, a[i] (i > 1) 表示第 i 位同学的得分
int b[100005] = {}; // b[1] ~ b[n] 存放"对 n 个同学的得分按从大到小进行排序"后的结果, b[1] 为其中的最大值
int n;              // 同学个数

bool cmp(int a, int b) {
    return a > b;
}

/*
  该函数返回整形数 x 在有序不递增整形序列 b[1] ~ b[n] 中最后一次出现的位置(左侧边界)
  输入参数 x 为整形数
  如果可以找到 x，则返回值为对应的下标值 (1 ~ n)；否则，返回 -1, 表示不存在 x 这样的数.
*/
int f (int x) {
    int s = 1;
    int e = n;
    while(s <= e) {
        int m = (s + e) / 2;
        if (b[m] > x) {
            s = m + 1;
        } else if (b[m] < x) {
            e = m - 1;
        } else if (b[m] == x) {
            if (b[m - 1] == x) {
                e = m - 1;
            } else {
                return m;
            }
        }
    }
    return -1;
}

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        b[i] = a[i];
    }

    /*
      思路 1:
        先对 n 个同学的得分按从大到小的顺序进行排序;
        然后从左往右查找，查找第一个和目标得分(a[i])相同的数, 得到此数对应的下标编号，
          即为第 i 个同学的得分排名!
      思路 2:
        先对 n 个同学的得分按从小到大的顺序进行排序;
        然后从右往左查找，查找第一个和目标得分(a[i])相同的数，得到此数对应的下标编号
          (即为 f(a[i]) 的返回值);
        计算等式 n + 1 - f(a[i]) 的值，该值即为第 i 个同学的得分排名

      小结:
        本质上 "思路1" 和 "思路 2" 基本相同, 2 种方法得到的结果完全一致!
        小宝在该文件中采用了 "思路1"!
      注意:
        小宝在另一个文件中采用了 "思路2", 文件路径如下:
          joyskid/J/L4/11_binary_search_2/p1452_ranking_2.cpp
    */

    // 对 b[1] ~ b[n] 按从大到小的顺序进行排序
    sort(b + 1, b + n + 1, cmp);

    for (int i = 1; i <= n; i++) {
        cout << f(a[i]) << endl;   // 计算并输出第 i 个同学的得分排名
    }

    return 0;
}